home *** CD-ROM | disk | FTP | other *** search
/ Mobiclic 71 / MOBICLIC 71.ISO / mac / QuickTime6_Mac / pour MacOsX / QuickTime651.pkg / Contents / Resources / VolumeCheck < prev    next >
Text File  |  2004-04-16  |  3KB  |  134 lines

  1. #!/usr/bin/perl
  2.  
  3. my $SYSVERS = "$ARGV[0]"."/System/Library/CoreServices/SystemVersion.plist";
  4. my $QUICKTIME_VERS = "$ARGV[0]"."/System/Library/Frameworks/QuickTime.framework/Versions/A/Resources/version.plist";
  5. my $EXIT_VALUE = 0;
  6. my $TIER_3_LANG = $ARGV[0] . "/var/db/.AppleTier3Language";
  7.  
  8.  
  9.  
  10.  
  11. DO_CHECKS: 
  12. {
  13.  
  14.     #
  15.     # Target volume must contain a X system.
  16.     #
  17.     if($ARGV[0] ne "/") 
  18.     {
  19.         $EXIT_VALUE = (( 1 << 6 ) | ( 1 << 5 ) | 16);
  20.         last;
  21.     }
  22.     
  23.     # Must NOT be tier 3
  24.     if (-e $TIER_3_LANG) {
  25.         $EXIT_VALUE = (( 1 << 6 ) | ( 1 << 5 ) );
  26.         last;
  27.     }
  28.  
  29.     #
  30.     # Don't install if target system is less than 10.2.6
  31.     #
  32.        if(CheckVersion( "$SYSVERS", "10.2.6", "ProductVersion", "<" ))
  33.     {
  34.         $EXIT_VALUE = (( 1 << 5 ) | 17);
  35.         last;
  36.     }
  37.    
  38.     
  39.     if (CheckVersion("$QUICKTIME_VERS", "6.5.1", "CFBundleVersion", ">")) {
  40.         $EXIT_VALUE = (( 1 << 5 ) | 19);
  41.         last;
  42.     }
  43.     #
  44.     # Run the installinfo "preinstall" tool.
  45.     #
  46.     my $packagepath = "";
  47.     
  48.     $packagepath = $ENV{'PACKAGE_PATH'};
  49.  
  50.     
  51.     if ("$packagepath" ne "") {
  52.         my $installinfotool = "$packagepath"."/Contents/Resources/installinfo";
  53.         
  54.         my $cmd = "\"$installinfotool\" -preinstall -volume \"$ARGV[0]\"";
  55.         system("$cmd");
  56.     }
  57.     
  58. }
  59.  
  60. exit($EXIT_VALUE);
  61.  
  62.  
  63. ##################
  64.  
  65. sub CheckVersion
  66. {
  67.     my $path            = $_[0];
  68.     my $version         = $_[1];
  69.     my $keyName         = $_[2];
  70.     my $operator        = $_[3];
  71.  
  72.     if (! -e $path) {
  73.         return 0;
  74.     }
  75.  
  76.     if (!$operator) {
  77.         $operator = "==";
  78.     }
  79.  
  80.     my $oldSeperator = $/;
  81.     $/ = \0;
  82.  
  83.     open( PLIST, "$path") || do {
  84.         return 0;
  85.     };
  86.  
  87.     $plistData = <PLIST>;
  88.     $plistData =~ /<dict>(.*?)<\/dict>/gis;
  89.  
  90.     @items = split(/<key>/, $plistData);
  91.  
  92.     shift @items;
  93.     foreach $item (@items) {
  94.         $item =~ /(.*?)<\/key>.*?<string>(.*?)<\/string>/gis;
  95.         $versiondata{ $1 } = $2;
  96.     }
  97.  
  98.     close(PLIST);
  99.  
  100.     $/ = $oldSeperator;
  101.  
  102.     @theVersionArray = split(/\./, $versiondata{$keyName});
  103.     for ($i = 0; $i < 3; $i++) {
  104.         if(!$theVersionArray[$i]) {
  105.             $theVersionArray[$i] = '0';
  106.         }
  107.     }
  108.  
  109.     @versionArray = split(/\./, $version);
  110.     
  111.     my $actualVersion;
  112.  
  113.     for ($i = 0; $i < 3; $i++) {
  114.         if (($theVersionArray[$i] != $versionArray[$i]) or ($i == 2)) {
  115.  
  116.             $actualVersion = $theVersionArray[$i];
  117.             $version = $versionArray[$i];
  118.  
  119.             last;
  120.         }
  121.     }
  122.  
  123.     my $expression = '$actualVersion ' . $operator . ' $version';
  124.     if( eval ($expression) )
  125.     {
  126.         return 1;
  127.     }
  128.     else
  129.     {
  130.         return 0;
  131.     }
  132.  
  133. }
  134.